<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>运算符</title>
  </head>
  <body>
    <script>
      // 题1.
      //3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？

    //57.327.输出的值都是字符串类型的。

      // 题2.
      //6 - false的结果是什么？

    // 6

      // 题3.
      //6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？

    // NaN.6false.第一个是number，第二个是字符串

      // 题4.
      //下面代码分别输出什么？请写出分析过程
      // var a = 1;
      //          2      3
      // var b = ++a + ++a;
      // console.log(b);// b=2+3=5
      //---上面和下面是两段代码---
      // var a = 1;
      //          1     2
      // var b = a++ + a++;
      // console.log(b);// b=1+2=3

      // 题5.
      //JS中哪些值通过Boolean对象转换出来的值为false

    //1.0 2."" 3.NaN 4.null 5.undefined

      // 题6.
      //分析下面代码的结果并解释原因。
      // var a = 1;
      // var b = 2;

      // console.log(a && b);// 2
      // console.log(a || b);// 1

    // && 短路运算是找假值，因为1和2都是true，所以直到最后一个值为止，所以是2
    // || 短路运算是找真值，1是真值，所以到1就停下来并且不会执行后面的代码，所以是1

      // 题7.
      //分析下面代码，分别输出什么？(以注释形式写在console.log后面)

      // var str = "12306";
      // var str1 = 1;
      // var num = 12306;
      // var boo = true;

      // console.log(str == num); // true."=="代表值相等就成立，就为true
      // console.log(str === num);// false. "==="需要值和数据类型相等才为true，str是字符串，num是数字，所以不相等
      // console.log(str1 == boo);// true. 1是true，所以相等
      // console.log(str1 === boo);// false.1和true的数据类型不同

      // 题8.
      //分析下面代码，写出分析过程，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)
      var i = 100;
      i++;//i=101
      j = i++;
      y = ++j;
      console.log(y);//102. y=++i++,i通过70行代码i++完成一次自增值为101，然后y=++i++，完成一次前置自增值为102
      console.log(j);//102. 运行到j=i++那一步，j的值为101，由于72行代码y=++j，所以j完成了一次自增，值为102

    </script>
  </body>
</html>
